Repo auto make wiki page - ☆Wiki Sandbox - НТЦ 'Комплексные Системы'

Архитектура системы

Структура системы

Информационные системы, построенные на платформе Дельта (далее просто системы), состоят из функциональных элементов, которые можно представить следующим образом:

Система
  Подсистема
    НСИ
      Свойства НСИ     
      Узлы
        Стандартные узлы НСИ
          Параметры
            Аналоговые параметры
            Дискретные параметры
            Векторные параметры
            Табличные параметры
          Аналоговые шкалы
          Наборы дискретных состояний
          Группы параметров
          Приборы          
        Нестандартные узлы НСИ
          Типы узлов
            Набор свойств
          Узлы
            История изменения свойств
            Привязанные параметры
          История изменения узлов          
      Конторль доступа
        Категории доступа
        Учетные записи
          Пользователи
          Группы пользователей
          Роли доступа
        Разрешения доступа
    Текущие данные
    Архивные данные
      Свойства архива
      История изменения значений параметров
      Последние известные текущие значения      
    Сервисы

С точки зрения программного обеспечения система - это набор различных сервисов, распределенных по серверам, объединенным в сеть. Каждый сервис выполняет определенную функцию, и каждый сервис может обслуживать множество подсистем. Одни сервисы могут быть зависимыми от других, но сервисы построены так, чтобы быть максимально изолированными друг от друга. Все это обеспечивает для системы в целом очень высокий уровень модульности, резервируемости и расширяемости.

Подсистемы (инстансы) системы Дельта

Для повышения управляемости и надежности информационная система разделяется на подсистемы (инстансы). Каждая подсистема функционально состоит из:
  • НСИ (нормативно-справочной информации);
  • текущего состояния объектов подсистемы (параметры, узлы и пр.);
  • истории изменения объектов подсистемы;
  • сервисов, обслуживающих подсистему (импорт/экспорт/передача/хранение/обработка данных и пр.).

Существуют реализации подсистем Дельта разных типов. Совместимость между разными типами подсистем обеспечивается спецификацией базового API подсистем. Наиболее универсальный и часто используемый тип подситем - стандартная подсистема Дельта.

Одна подсистема может выступать источником данных для другой подсистемы, благодаря чему всю систему в целом можно построить в виде иерархической структуры из отдельных инстансов.
Принцип разделения на подсистемы определяется индивидуально на этапе проектирования информационной системы. Для систем диспетчеризации данных, как правило, отдельная подсистема выделяется для каждой информационной системы, которая является источником данных для вышестоящей системы на платформе Дельта.

НСИ

Нормативно-справочная информация (НСИ) подсистемы - это множество параметров и узлов, которые представляют информационную модель данных, которые в этой системе обрабатываются.
Для стандартной подсистемы Дельта создается отдельная БД SQL Server для хранения НСИ.

Параметры НСИ (каналы)

Параметр подсистемы - это некоторая переменная величина с определенным набором свойствами, необходимых для обработки и представления значений этого канала. Определены параметры нескольких типов в соответствии с предназначением параметра:

  • Analog

    Аналоговые параметры используются для представления величин, значение, которых представляет собой действительное число.

  • Discrete

    Дискретные параметры используются для представления величин, значение, которых выражено целым числом, которое может быть сопоставлено с текстовым представлением.
     

  • Vector

    Векторные параметры в качестве значения имеют массив (вектор) чисел. Могут быть использованы для представления произвольной бинарной информации. Длина значений векторного параметра может быть переменной, но не должна превышать установленного в НСИ значения.
     
    Определено несколько подтипов векторных параметров:

    • VectorRealization = 1
    • VectorSpectrum = 2
    • VectorTrajectory = 3
  • Record

    Значение табличного параметра представляет собой запись, структура (набор полей) которой определена мета-типом. Такие параметры применяются для сохранения журналов событий и других данных типа таблиц, записи которых содержат метку времени в качестве первичного ключа (части ключа). У табличного параметра может не быть текущего значения.

Группы параметров и приборы

Для каждого параметра подсистемы указывается его принадлежность к одной из групп параметров и к одному из приборов.

Текущие данные

Текущие данные - это состояние параметров инстанса в реальный момент времени. А именно:

  • значение
    Текущее значение параметра. Тип параметра определяет тип этого значения. Это может быть вещественное число, целочисленный код состояния из списка возможных состояний параметра, текстовая строка, байтовый массив и другой тип данных. Например для аналоговых параметров - это будет значение измеряемой величины, выраженное в единицах измерения, которые назначены для параметра.
     
  • статус
    Набор флагов, которые обозначают статус текущего состояния параметра (признаки отсутствия данных, выхода за пределы достоверности и пр.). [1]
     
  • расширенный статус
    Дополнительное целочисленное поле. Назначение определяется конкретной реализацией подсистемы или сервиса источника данных.
     
  • качество значения
    Вещественное число от 0 до 1. Представляет собой нечеткую оценку достоверности значения параметра. 0 означает недостоверное значение, 0.5 - неопределенное значение, 1 - достоверное значение. Качество данных зависит от статуса исходных значений и может изменяться после обработки данных (агрегирование, интерполяция и пр.).
  • метка времени
    Дата и время, когда параметр изменил свое состояние.
    Метки времени записываются в UTC с точностью не меньше миллисекунды.

Отдельные параметры подсистемы (или отдельные типы подсистем в целом) могут не иметь текущих данных.

Текущие данные для стандартных подсистем предоставляет сервис DataServer.

Архивные данные

Архивные данные подсистемы - это история изменения состояния параметров инстанса, записанная по определенным правилам архивирования. Архивирование может быть настроено по изменению значения параметра на заданную величину или по времени. Или архив параметра может периодически синхронизироваться с архивом прибора учета или архивом системы, используемой в качестве источника данных.

Дополнительно в архиве может отдельно периодически сохраняться срез текущих данных. Это используется для сохранения состояния работы сервисов текущих данных между их перезапусками.

Архивные данные хранятся в СУБД. Для стандартной подсистемы создается отдельная БД для архивных данных.

Сервисы

Функционирование подсистем и системы в целом обеспечивается сервисами. Сервис может представлять собой службу Windows, демон Unix или сценарий.

Реализовано большое число различных сервисов Дельта. Каждый из них предназначен для выполнения узкого набора функций. Например, существует сервис для обработки данных реального времени, сервис для архивирования данных, сервисы для получения данных из приборов автоматики и пр. Разделение функций системы по отдельным сервисам повышает стабильность системы и упрощает ее настройку и администрирование.

Один сервис может обслуживать сразу несколько подсистем. Например, сервис данных реального времени обрабатывает текущие данные всех подсистем. Внутренняя архитектура большинства сервисов такова, что обработка подсистем внутри сервиса выполняется максимально изолированно, так чтобы сбой в процессе обработки одной подсистемы не повлиял на процессы обработки остальных подсистем внутри сервиса.

Сервисы, обслуживающие одну и ту же подсистему, могут быть распределены по разным серверам. Например, сервис данных реального времени может размещаться на сервере A, сервис архивных данных и сами данные - на сервере B, а сервис WEB-доступа к данным - на сервере C.

Сервис может зависеть от работы нескольких других сервисов.

Протоколы связи

Для передачи информации между двумя сервисами и между сервисами и внешними элементами системы (источниками и потребителями информации) используются как стандартные протоколы передачи данных так и специфические.

Для передачи текущих данных используется собственный протокол D8LL, реализованный поверх TCP. Протокол позволяет организовать подписку на получение обновлений текущих данных в больших объемах. Этот же протокол используется для отправки изменений текущих данных и для передачи сообщений квитирования тревог.

Для доступа к архивным данным применяются провайдеры БД и протоколы, которые они реализуют: T-SQL, OLEDB и ODBC.

Для взаимодействия с внешними элементами системы используется широкий набор поддерживаемых протоколов:
  • IEC60870-104 / 101
  • OPC DA / HDA / UA
  • Modbus RTU / TCP
  • SNMP
  • WEB-сервисы
  • специализированные протоколы передачи различных приборов
  • конфигурируемые SQL-запросы
  • обмен текстовыми файлами по электронной почте или FTP
  • обмен XLSX-отчетами
  • COM API

Клиентские сервисы используют протоколы D8LL и T-SQL в случае использования Windows-клиента. В случае использования WEB-клиента для связи с сервером используется только HTTP/HTTPS.

Ссылки

[1]   Флаги статуса состояния параметра